const autotilesOptions = {
  // 一个单元的大小
  pieceSize: 16,
  // 一个图块的大小,一个图块由4个单元组成
  memberSize: 32,
  // 展示的小图块后缀
  showSmallTail: 's',
  // 图块拼接和命名规则
  rules: [
    // 独立的小块
    {
      name: 's',
      pieces: [0, 1, 6, 7],
      match (str) {
        // 四角方向有,但互不邻接
        return str.slice(0, 4) === '0000'
      }
    },
    // 左右
    {
      name: 'lr',
      pieces: [24, 29, 30, 35],
      match (str) {
        // 上下方向都有邻接,左右方向没有邻接
        return str.slice(0, 4) === '0101'
      }
    },
    // 上下
    {
      name: 'tb',
      pieces: [14, 15, 44, 45],
      match (str) {
        // 左右方向都有邻接,上下方向没有邻接
        return str.slice(0, 4) === '1010'
      }
    },
    // 上末端
    {
      name: 'to',
      pieces: [12, 17, 18, 23],
      match (str) {
        // 下方向有但是其他邻接方向没有
        return str.slice(0, 4) === '0001'
      }
    },
    // 下末端
    {
      name: 'bo',
      pieces: [36, 41, 42, 47],
      match (str) {
        // 上方向有但是其他邻接方向没有
        return str.slice(0, 4) === '0100'
      }
    },
    // 左末端
    {
      name: 'lo',
      pieces: [12, 13, 42, 43],
      match (str) {
        // 右方向有但是其他邻接方向没有
        return str.slice(0, 4) === '0010'
      }
    },
    // 右末端
    {
      name: 'ro',
      pieces: [16, 17, 46, 47],
      match (str) {
        // 左方向有但是其他邻接方向没有
        return str.slice(0, 4) === '1000'
      }
    },
    // 中央
    {
      name: 'c1234',
      pieces: [26, 27, 32, 33],
      match (str) {
        return str === '11111111'
      }
    },
    // 中央缺角左上
    {
      name: 'c234',
      pieces: [4, 27, 32, 33],
      match (str) {
        // 八方向缺角左上
        return str === '11110111'
      }
    },
    // 中央缺角右上
    {
      name: 'c134',
      pieces: [26, 5, 32, 33],
      match (str) {
        // 八方向缺角右上
        return str === '11111011'
      }
    },
    // 中央缺角左下
    {
      name: 'c124',
      pieces: [26, 27, 10, 33],
      match (str) {
        // 八方向缺角左下
        return str === '11111101'
      }
    },
    // 中央缺角右下
    {
      name: 'c123',
      pieces: [26, 27, 32, 11],
      match (str) {
        // 八方向缺角右下
        return str === '11111110'
      }
    },
    // 中央缺角左上右上
    {
      name: 'c34',
      pieces: [4, 5, 32, 33],
      match (str) {
        // 八方向缺角左上右上
        return str === '11110011'
      }
    },
    // 中央缺角左上左下
    {
      name: 'c24',
      pieces: [4, 27, 10, 33],
      match (str) {
        return str === '11110101'
      }
    },
    // 中央缺角左上右下
    {
      name: 'c23',
      pieces: [4, 27, 32, 11],
      match (str) {
        return str === '11110110'
      }
    },
    // 中央缺角右上左下
    {
      name: 'c14',
      pieces: [26, 5, 10, 33],
      match (str) {
        return str === '11111001'
      }
    },
    // 中央缺角右上右下
    {
      name: 'c13',
      pieces: [26, 5, 32, 11],
      match (str) {
        return str === '11111010'
      }
    },
    // 中央缺角左下右下
    {
      name: 'c12',
      pieces: [26, 27, 10, 11],
      match (str) {
        return str === '11111100'
      }
    },
    // 中央缺角右上左下右下
    {
      name: 'c1',
      pieces: [26, 5, 10, 11],
      match (str) {
        return str === '11111000'
      }
    },
    // 中央缺角左上左下右下
    {
      name: 'c2',
      pieces: [4, 27, 10, 11],
      match (str) {
        return str === '11110100'
      }
    },
    // 中央缺角左上右上右下
    {
      name: 'c3',
      pieces: [4, 5, 32, 11],
      match (str) {
        return str === '11110010'
      }
    },
    // 中央缺角左上右上左下
    {
      name: 'c4',
      pieces: [4, 5, 10, 33],
      match (str) {
        return str === '11110001'
      }
    },
    // 中央缺角左上右上左下右下
    {
      name: 'c',
      pieces: [4, 5, 10, 11],
      match (str) {
        return str === '11110000'
      }
    },
    // 上完整
    {
      name: 't1234',
      pieces: [14, 15, 20, 21],
      match (str) {
        // 上没有,左右下齐全
        return str.slice(0, 4) === '1011' && str.slice(6, 8) === '11'
      }
    },
    // 上缺角左下
    {
      name: 't124',
      pieces: [14, 15, 10, 21],
      match (str) {
        return str.slice(0, 4) === '1011' && str.slice(6, 8) === '01'
      }
    },
    // 上缺角右下
    {
      name: 't123',
      pieces: [14, 15, 20, 11],
      match (str) {
        return str.slice(0, 4) === '1011' && str.slice(6, 8) === '10'
      }
    },
    // 上缺角左下右下
    {
      name: 't12',
      pieces: [14, 15, 10, 11],
      match (str) {
        return str.slice(0, 4) === '1011' && str.slice(6, 8) === '00'
      }
    },
    // 下完整
    {
      name: 'b1234',
      pieces: [38, 39, 44, 45],
      match (str) {
        return str.slice(0, 4) === '1110' && str.slice(4, 6) === '11'
      }
    },
    // 下缺角左上
    {
      name: 'b234',
      pieces: [4, 39, 44, 45],
      match (str) {
        return str.slice(0, 4) === '1110' && str.slice(4, 6) === '01'
      }
    },
    // 下缺角右上
    {
      name: 'b134',
      pieces: [38, 5, 44, 45],
      match (str) {
        return str.slice(0, 4) === '1110' && str.slice(4, 6) === '10'
      }
    },
    // 下缺角左上右上
    {
      name: 'b34',
      pieces: [4, 5, 44, 45],
      match (str) {
        return str.slice(0, 4) === '1110' && str.slice(4, 6) === '00'
      }
    },
    // 左完整
    {
      name: 'l1234',
      pieces: [24, 25, 30, 31],
      match (str) {
        return str.slice(0, 4) === '0111' && str[5] === '1' && str[7] === '1'
      }
    },
    // 左缺角右上
    {
      name: 'l134',
      pieces: [24, 5, 30, 31],
      match (str) {
        return str.slice(0, 4) === '0111' && str[5] === '0' && str[7] === '1'
      }
    },
    // 左缺角右下
    {
      name: 'l123',
      pieces: [24, 25, 30, 11],
      match (str) {
        return str.slice(0, 4) === '0111' && str[5] === '1' && str[7] === '0'
      }
    },
    // 左缺角右上右下
    {
      name: 'l13',
      pieces: [24, 5, 30, 11],
      match (str) {
        return str.slice(0, 4) === '0111' && str[5] === '0' && str[7] === '0'
      }
    },
    // 右完整
    {
      name: 'r1234',
      pieces: [28, 29, 34, 35],
      match (str) {
        return str.slice(0, 4) === '1101' && str[4] === '1' && str[6] === '1'
      }
    },
    // 右缺角左上
    {
      name: 'r234',
      pieces: [4, 29, 34, 35],
      match (str) {
        return str.slice(0, 4) === '1101' && str[4] === '0' && str[6] === '1'
      }
    },
    // 右缺角左下
    {
      name: 'r124',
      pieces: [28, 29, 10, 35],
      match (str) {
        return str.slice(0, 4) === '1101' && str[4] === '1' && str[6] === '0'
      }
    },
    // 右缺角左上左下
    {
      name: 'r24',
      pieces: [4, 29, 10, 35],
      match (str) {
        return str.slice(0, 4) === '1101' && str[4] === '0' && str[6] === '0'
      }
    },
    // 左上完整
    {
      name: 'lt1234',
      pieces: [12, 13, 18, 19],
      match (str) {
        // 整个右下侧全齐
        return str.slice(0, 4) === '0011' && str[7] === '1'
      }
    },
    // 左上缺角右下
    {
      name: 'lt123',
      pieces: [12, 13, 18, 11],
      match (str) {
        return str.slice(0, 4) === '0011' && str[7] === '0'
      }
    },
    // 右上完整
    {
      name: 'rt1234',
      pieces: [16, 17, 22, 23],
      match (str) {
        return str.slice(0, 4) === '1001' && str[6] === '1'
      }
    },
    // 右上缺角左下
    {
      name: 'rt124',
      pieces: [16, 17, 10, 23],
      match (str) {
        return str.slice(0, 4) === '1001' && str[6] === '0'
      }
    },
    // 左下完整
    {
      name: 'lb1234',
      pieces: [36, 37, 42, 43],
      match (str) {
        return str.slice(0, 4) === '0110' && str[5] === '1'
      }
    },
    // 左下缺角右上
    {
      name: 'lb134',
      pieces: [36, 5, 42, 43],
      match (str) {
        return str.slice(0, 4) === '0110' && str[5] === '0'
      }
    },
    // 右下完整
    {
      name: 'rb1234',
      pieces: [40, 41, 46, 47],
      match (str) {
        return str.slice(0, 4) === '1100' && str[4] === '1'
      }
    },
    // 右下缺角左上
    {
      name: 'rb234',
      pieces: [4, 41, 46, 47],
      match (str) {
        return str.slice(0, 4) === '1100' && str[4] === '0'
      }
    },
  ]
}

export default autotilesOptions